function    A309()
format long;

% 使用滤波器的单级二维离散小波变换
% 加载并显示图像。
% load sculpture                                                           % 加载一个图像数据（sculpture）
X = imread('A309.png');                                                    % 加载 A308.png 图像

% 创建第一个 Figure 用于 Symlets 小波结果
figure;
subplot(2, 3, 1)
imagesc(X)
colormap gray
title('原始图像')
% 使用Symlets小波进行二维离散小波变换
[cA_sym, cH_sym, cV_sym, cD_sym] = dwt2(X, 'sym12', 'mode', 'per');        % 对图像 X 进行二维小波变换
mincA_sym = min(cA_sym(:));
maxcA_sym = max(cA_sym(:));
subplot(2, 3, 2)
cA_normalized = (cA_sym - mincA_sym) / (maxcA_sym - mincA_sym);
imagesc(cA_normalized);                                                    % 显示Symlets小波近似系数，它表示图像的低频部分，通常包含图像的主要轮廓、结构等信息
% imagesc(cA)
colormap gray;
title('Symlets 小波近似系数')
subplot(2, 3, 3)
imagesc(cH_sym)                                                            % 显示图像的水平细节部分，表现图像中的水平边缘。
colormap gray
title('Symlets 小波水平细节')
subplot(2, 3, 4)
imagesc(cV_sym)                                                            % 显示图像的垂直细节部分，表现图像中的垂直边缘。
colormap gray
title('Symlets 小波垂直细节')
subplot(2, 3, 5)
imagesc(cD_sym)                                                            % 显示图像的对角细节部分，表现图像中的对角边缘。
colormap gray
title('Symlets 小波对角细节')

% 创建第二个 Figure 用于 Daubechies 小波结果
figure;
subplot(2, 3, 1)
imagesc(X)
colormap gray
title('原始图像 - Daubechies 小波')
% 使用Daubechies小波进行二维离散小波变换
[cA_db, cH_db, cV_db, cD_db] = dwt2(X, 'db12', 'mode', 'per');             
mincA_db = min(cA_db(:));
maxcA_db = max(cA_db(:));
subplot(2, 3, 2)
cA_normalized_db = (cA_db - mincA_db) / (maxcA_db - mincA_db);
imagesc(cA_normalized_db);                                                 % 显示Daubechies小波近似系数
colormap gray;
title('Daubechies 小波近似系数')
subplot(2, 3, 3)
imagesc(cH_db)                                                             % 显示图像的水平细节部分
colormap gray
title('Daubechies 小波水平细节')
subplot(2, 3, 4)
imagesc(cV_db)                                                             % 显示图像的垂直细节部分
colormap gray
title('Daubechies 小波垂直细节')
subplot(2, 3, 5)
imagesc(cD_db)                                                             % 显示图像的对角细节部分
colormap gray
title('Daubechies 小波对角细节')